// pages/index/index.js
import { login } from '../../api/auth'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    banners: [],
    products: [],
    token: wx.getStorageSync('token'),
    userInfo: wx.getStorageSync('userInfo')
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const token = wx.getStorageSync('token');
    this.setData({ token });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    const token = wx.getStorageSync('token');
    this.setData({ token });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 获取用户信息并登录
  async getUserProfile() {
    try {
      // 先获取code
      const { code } = await new Promise((resolve, reject) => {
        wx.login({
          success: (res) => resolve(res),
          fail: (err) => reject(err)
        });
      });

      if (!code) {
        throw new Error('获取登录凭证失败');
      }

      console.log('获取登录凭证成功:', code);

      // 再获取用户信息
      const { userInfo } = await new Promise((resolve, reject) => {
        wx.getUserProfile({
          desc: '用于完善会员资料',
          success: (res) => resolve(res),
          fail: (err) => reject(err)
        });
      });

      if (!userInfo) {
        throw new Error('获取用户信息失败');
      }

      const userInfoData = {
        nickName: userInfo.nickName,
        avatarUrl: userInfo.avatarUrl
      };

      console.log('获取用户信息成功:', userInfoData);

      // 调用登录接口
      const loginResult = await login(code, userInfoData);
      console.log('登录接口返回结果:', loginResult);
      
      if (loginResult && loginResult.code === 200) {
        wx.setStorageSync('token', loginResult.data.token);
        wx.setStorageSync('userInfo', userInfoData);
        this.setData({ 
          token: loginResult.data.token,
          userInfo: userInfoData
        });
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });
      } else {
        throw new Error(loginResult?.msg || '登录失败');
      }
    } catch (error) {
      console.error('登录失败:', error);
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'none'
      });
    }
  },

  // 获取用户信息Promise
  getUserProfilePromise() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善会员资料',
        lang: 'zh_CN',
        success: (res) => {
          if (!res.userInfo) {
            reject(new Error('获取用户信息失败'));
            return;
          }
          resolve(res);
        },
        fail: (err) => {
          console.error('获取用户信息失败:', err);
          reject(new Error('获取用户信息失败'));
        }
      });
    });
  },

  // 获取登录凭证Promise
  getLoginCodePromise() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: (res) => {
          if (!res.code) {
            reject(new Error('获取登录凭证失败'));
            return;
          }
          resolve(res);
        },
        fail: (err) => {
          console.error('获取登录凭证失败:', err);
          reject(new Error('获取登录凭证失败'));
        }
      });
    });
  },

  // 执行登录
  doLogin(userInfo) {
    console.log('开始登录，用户信息:', userInfo);
    wx.login({
      success: (res) => {
        console.log('wx.login成功:', res);
        if (res.code) {
          // 直接从res.code获取字符串
          const wxCode = res.code;
          console.log('获取到的code:', wxCode); // 添加日志
          
          // 确保传递的是字符串
          login(wxCode, {
            nickName: userInfo.nickName,
            avatarUrl: userInfo.avatarUrl
          })
            .then(response => {
              console.log('登录成功，响应:', response);
              if (response.code === 200) {
                wx.setStorageSync('token', response.data.token);
                this.setData({ token: response.data.token });
                wx.showToast({
                  title: '登录成功',
                  icon: 'success'
                });
              }
            })
            .catch(error => {
              console.error('登录失败:', error);
              wx.showToast({
                title: error.message || '登录失败',
                icon: 'none'
              });
            });
        } else {
          console.error('获取code失败:', res);
          wx.showToast({
            title: '登录失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('微信登录失败:', err);
        wx.showToast({
          title: '微信登录失败',
          icon: 'none'
        });
      }
    });
  }
})